package com.singfan.common.util;

import java.util.regex.Pattern;

/**
 * 校验工具类
 * Author: HanSongHe
 * Date: 2015-07-27 14:04
 * Desc:
 */
public class CheckUtil {
    /**
     * 是否为正整数
     * @param value 要校验的值
     * @return true:是   false:否
     */
    public static boolean
    isPositiveInteger(String value){
        boolean result = false;

        if(!StringUtil.isNullOrEmpty(value)){
            result = Pattern.matches("^[1-9][0-9]*$", value);
        }

        return result;
    }

    /**
     * 是否为布尔值（忽略大小写）
     * @param value 要校验的值
     * @return true:是   false:否
     */
    public static boolean isBoolean(String value){
        boolean result = false;

        if(!StringUtil.isNullOrEmpty(value)){
            if (value.equalsIgnoreCase("true") || value.equalsIgnoreCase("false")){
                result = true;
            }
        }

        return result;
    }

    /**
     * 是否为ip地址（只是简单的ip形式规则匹配，例如：xxx.xxx.x.xx）
     * @param value 要校验的值
     * @return true:是   false:否
     */
    public static boolean isIpAddress(String value){
        boolean result = false;

        if(!StringUtil.isNullOrEmpty(value)){
            result = Pattern.matches("^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$", value);
        }

        return result;
    }

    /**
     * 是否为自定义的端口号（1025-65535）
     * @param value 要校验的值
     * @return true:是   false:否
     */
    public static boolean isCustomPort(String value){
        boolean result = false;

        if(isPositiveInteger(value)){
            int iValue = Integer.valueOf(value);
            result = isCustomPort(iValue);
        }

        return result;
    }

    /**
     * 是否为自定义的端口号（1025-65535）
     * @param value 要校验的值
     * @return true:是   false:否
     */
    public static boolean isCustomPort(int value){
        boolean result = false;

        if(value >= 1025 && value <= 65535){
            result = true;
        }

        return result;
    }

    /**
     * 校验是否为手机号
     * @param value 要校验的值
     * @return  true:是   false:否
     */
    public static boolean isMobileNumber(String value){
        boolean result = false;

        if(!StringUtil.isNullOrEmpty(value)){
            result = Pattern.matches("^[1][34578][0-9]{9}$", value);
        }

        return result;
    }

    /**
     * 是否为座机号码，可以有分机号（em:0431-85774322-1234）
     * @param value 要校验的值
     * @return  true:是   false:否
     */
    public static boolean isPhoneNumber(String value){
        boolean result = false;

        if(!StringUtil.isNullOrEmpty(value)){
            result = Pattern.matches("^(0[0-9]{2,3}\\-)?([2-9][0-9]{6,7})+(\\-[0-9]{1,4})?$", value);
        }

        return result;
    }

    /**
     * 是否为浮点数
     * @param value 要校验的值
     * @return  true:是   false:否
     */
    public static boolean isDouble(String value){
        boolean result = true;

//        if(!StringUtil.isNullOrEmpty(value)){
//            result = Pattern.matches("^-?([1-9]/d*/./d*|0/./d*[1-9]/d*|0?/.0+|0)$", value);
//        }

        return result;
    }
}
